#include <stdio.h>

struct node
{
    int a;  // 4+4，m=4
    long c; // 8+0，m=8
    char b; // 1+7，m=1
}; // M=8（即决定了起始地址的倍数，也决定了变量大小的倍数）

struct node
{
    int a;  // 4+0，m=4
    char b; // 1+3，m=1
    long c; // 8+0，m=8
}; // M=8（即决定了起始地址的倍数，也决定了变量大小的倍数）

int main(int argc, char const *argv[])
{
    printf("%ld\n", sizeof(struct node));

    int x; // 大小占4个字节，起始地址是4的整数倍，m=4
    printf("%p\n", &x);

    // 64位
    char  ch; // 1, m=1
    short st; // 2, m=2，偶数地址
    int   it; // 4, m=4
    long  lg; // 8, m=8
    long double lf; // 16, m=8 // m越大代表位置越苛刻

    printf("%ld\n", sizeof(lf));

    struct node n; // M = max{m}
    struct node k[20];
    k[0]
    k[1]

    return 0;
}
